package ThreadTest_p.p1_counterr.v1;

//背景: 项目中需要统计用户点击次数，多个线程同时操作计数器。
//需求: 用最少代码实现线程安全的计数器，避免i++的竞态条件。
// Counter 是一个工具类（状态对象），不是线程  不能这么写
public class Counter extends Thread{
    public int count = 0; // 每个计数器实例独立计数,不能使用静态
    /*
    实际使用场景
        Counter pageViews = new Counter(); // 统计页面浏览次数
        Counter errorCount = new Counter(); // 统计错误次数
        Counter userClicks = new Counter(); // 统计用户点击次数
     */
    public synchronized void add() {
        count++;
    }

    public synchronized void show() {
        System.out.println(Thread.currentThread().getName() + ": " +count);
    }

    @Override
    public void run() {
        add();
        show();
    }
}
